package com.cheng.example.book.advise151.chap5;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;


/**
 * 建议74：不推荐使用binarySearch对列表进行检索
 *
 * 这里牵扯到二分查找的问题，暂时不做深究
 *
 * 因为二分法查询的一个首要前提是：数据集以实现升序排列，否则二分法查找的值是不准确的。
 * 不排序怎么确定是在小区(比中间值小的区域) 中查找还是在大区(比中间值大的区域)中查找呢？二分法查找必须要先排序，这是二分法查找的首要条件。
 *
 *
 * 使用binarySearch的二分法查找比indexOf的遍历算法性能上高很多，特别是在大数据集且目标值又接近尾部时，
 * binarySearch方法与indexOf方法相比，性能上会提升几十倍，因此从性能的角度考虑时可以选择binarySearch。
 */
public class Client74 {
    public static void main(String[] args) {
        List<String> cities = new ArrayList<String>();
        cities.add("上海");
        cities.add("广州");
        cities.add("广州");
        cities.add("北京");
        cities.add("天津");
        //indexOf取得索引值
        int index1= cities.indexOf("广州");
        //binarySearch找到索引值
        int index2= Collections.binarySearch(cities, "广州");
        System.out.println("索引值(indexOf)："+index1);
        System.out.println("索引值(binarySearch)："+index2);
    }
}